package com.example.bletestutils.utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MyUtils {

    /**
     * 根据指定的字节序列拆分字节数组
     *
     * @param data 原始字节数组
     * @param delimiter 拆分用的字节序列
     * @return 拆分后的字节数组列表
     */
    public static List<byte[]> splitByteArrayBySequence(byte[] data, byte[] delimiter) {
        List<byte[]> result = new ArrayList<>();
        int delimiterLength = delimiter.length;
        int length = data.length;
        int endIndex = 0;

        for (int i = 0; i < length;) {
            boolean found = true;
            for (int j = 0; j < delimiterLength; j++) {
                if (i + j >= length || data[i + j] != delimiter[j]) {
                    found = false;
                    break;
                }
            }

            if (found) {
                // 找到了分隔符，截取前面的数据
                result.add(Arrays.copyOfRange(data, endIndex, i));
                // 更新起始位置
                endIndex = i + delimiterLength;
                // 移动索引位置
                i += delimiterLength;
            } else {
                i++;
            }
        }

        // 添加最后一个数据段（如果没有以分隔符结尾，则包含剩余所有数据）
        if (endIndex < length) {
            result.add(Arrays.copyOfRange(data, endIndex, length));
        }

        return result;
    }

    /**
     * 将字节数组转换为十六进制字符串
     *
     * @param bytes 字节数组
     * @return 十六进制字符串
     */
    public static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02X ", b));
        }
        return sb.toString().trim();
    }
}
